// 模块切换主函数
function switchModule(moduleId) {
    // 1. 清理当前激活的模块
    const activeModule = document.querySelector('.module.active');
    if (activeModule) {
        const moduleName = activeModule.id.replace('-module', '');
        const cleanupFn = window[`cleanup${capitalizeFirstLetter(moduleName)}`];
        if (typeof cleanupFn === 'function') {
            cleanupFn();
        }
    }

    // 2. 隐藏所有模块
    document.querySelectorAll('.module').forEach(module => {
        module.classList.remove('active');
    });

    // 3. 显示目标模块
    const targetModule = document.getElementById(`${moduleId}-module`);
    if (!targetModule) return;

    targetModule.classList.add('active');

    // 4. DOM渲染完成后初始化
    setTimeout(() => {
        const initFn = window[`init${capitalizeFirstLetter(moduleId)}`];
        if (typeof initFn === 'function') {
            initFn();
        }
    }, 50); // 延迟50ms确保display生效
}

// 在main.js中添加游戏切换逻辑
// 1. 游戏按钮点击事件处理（修复变量作用域问题）
function handleGameBtnClick() {
    const gameType = this.getAttribute('data-game');
    // 关键：在函数内重新获取元素，避免依赖外部变量
    const gameBtns = document.querySelectorAll('.game-btn'); // 重新获取所有游戏按钮
    const gameItems = document.querySelectorAll('.game-item'); // 重新获取所有游戏容器
    
    // 更新按钮激活状态
    gameBtns.forEach(b => b.classList.remove('active'));
    this.classList.add('active');
    
    // 更新游戏显示状态
    gameItems.forEach(item => {
        item.classList.remove('active');
        if (item.classList.contains(`${gameType}-game`)) {
            item.classList.add('active');
            initSpecificGame(gameType);
        }
    });
}

// 2. 游戏模块初始化（无需修改，仅确保绑定的是命名函数）
function initGame() {
    const gameBtns = document.querySelectorAll('.game-btn');
    // 给每个按钮绑定“命名函数”（方便后续移除事件）
    gameBtns.forEach(btn => {
        btn.addEventListener('click', handleGameBtnClick);
    });
    // 初始化默认显示贪吃蛇游戏
    initSpecificGame('snake');
}

// 3. 游戏模块清理函数（补充：移除按钮的点击事件，避免重复绑定）
function cleanupGame() {
    // 清理贪吃蛇、俄罗斯方块、2048游戏（原有逻辑保留）
    if (typeof cleanupSnakeGame === 'function') cleanupSnakeGame();
    if (typeof pauseTetrisGame === 'function') pauseTetrisGame();
    if (typeof cleanupTetrisGame === 'function') cleanupTetrisGame();
    if (typeof pause2048Game === 'function') pause2048Game();
    if (typeof cleanup2048Game === 'function') cleanup2048Game();
    
    // 关键：移除游戏按钮的点击事件（避免切换模块后事件残留）
    const gameBtns = document.querySelectorAll('.game-btn');
    gameBtns.forEach(btn => {
        btn.removeEventListener('click', handleGameBtnClick);
    });
}

// 游戏初始化分发函数
function initSpecificGame(gameType) {
   
    switch(gameType) {
        case 'snake':
            // 原有的贪吃蛇初始化逻辑
            initSnakeGame();
            break;
        case 'tetris':
            // 俄罗斯方块初始化
            initTetrisGame();
            break;
        case '2048':
            // 2048初始化
            init2048Game();
            break;
    }
}


// 原有贪吃蛇初始化函数重命名
function initSnakeGame() {
    // 原snake.js中的initGame()逻辑
    const canvas = document.getElementById('snake-canvas');
    const ctx = canvas.getContext('2d');
    const scoreElement = document.getElementById('snake-score');
    const startBtn = document.getElementById('snake-start');
    const pauseBtn = document.getElementById('snake-pause');
    const resetBtn = document.getElementById('snake-reset');

    canvas.width = 400;
    canvas.height = 400;

    resetSnakeGame(ctx, canvas, scoreElement);

    startBtn.onclick = () => startGame(ctx, canvas, scoreElement);
    pauseBtn.onclick = pauseGame;
    resetBtn.onclick = () => resetSnakeGame(ctx, canvas, scoreElement);

    document.addEventListener('keydown', handleKeyDown);
}


// 首字母大写工具函数
function capitalizeFirstLetter(str) {
    if (!str) return '';
    return str.charAt(0).toUpperCase() + str.slice(1);
}

// 页面加载默认显示待办清单
document.addEventListener('DOMContentLoaded', () => {
    switchModule('todo');
});